package com.zhongwang.business.module.estimateBudgetAccountingManage.dao;

import com.zhongwang.business.gen.entity.*;
import com.zhongwang.business.module.contractManage.model.ConContractMainModel;
import com.zhongwang.business.module.estimateBudgetAccountingManage.model.*;
import com.zhongwang.business.module.estimateBudgetAccountingManage.model.redis.MatDescModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * GetDataDao
 * 获取数据持久层
 *
 * @author 徐一贺
 * @version 1.0
 * @date 2020/9/11 15:10
 */
@Repository
public interface GetDataDao {
    /**
     * findList
     * 获取数据
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/9/14 9:16
     * @version 1.0
     */
    List<GetMatDataModel> findList();

    /**
     * insertDataFromPdmAndMms
     * 获取PDM系统与物资管理系统联查的数据并插入到商务系统材料表
     *
     * @param getMatDataModel 参数
     * @return int 返回数量
     * @author 徐一贺
     * @date 2020/9/14 9:55
     * @version 1.0
     */
    int insertDataFromPdmAndMms(GetMatDataModel getMatDataModel);

    /**
     * deleteDataFromPdmAndMms
     * 清除掉不需要的数据
     *
     * @param getMatDataModel 参数
     * @return int 执行数量
     * @author 徐一贺
     * @date 2020/9/14 14:25
     * @version 1.0
     */
    int deleteDataFromPdmAndMms(GetMatDataModel getMatDataModel);

    /**
     * findPartInfoListByCode
     * 根据项目号获取对应的部分结构列表
     *
     * @param code 项目号
     * @return BProductstructure 列表实体
     * @author 徐一贺
     * @date 2020/9/16 13:52
     * @version 1.0
     */
    List<VwDsnProStrucModel> findPartInfoListByCode(String code);

    /**
     * findDataSourceTemplateList
     * 获取数据源模板数据
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/9/16 14:31
     * @version 1.0
     */
    List<BusDataSourceTemplate> findDataSourceTemplateList();

    /**
     * insertAbDataSource
     * 插入数据源信息
     *
     * @param abDataSource 数据
     * @return int 执行数量
     * @author 徐一贺
     * @date 2020/9/16 15:10
     * @version 1.0
     */
    int insertAbDataSource(BusDataSource abDataSource);

    /**
     * 根据项目和和预核算类型获取单据表信息
     *
     * @param code     项目号
     * @param taskType 预核算类型
     * @return AbBudgetAccountingTask 单据表信息
     * @author 徐一贺
     * @date 2020/9/16 15:16
     * @version 1.0
     */
    BusBudgetAccountingTask getAbBudgetAccountingTaskByCodeAndTaskType(@Param("code") String code, @Param("taskType") Integer taskType);

    /**
     * getTaskByCodeAndTaskType
     * 根据项目编号和预核算类型获取预核算任务
     *
     * @param code     项目号
     * @param taskType 预核算类型
     * @return Task 任务表
     * @author 徐一贺
     * @date 2020/9/16 15:45
     * @version 1.0
     */
    Task getTaskByCodeAndTaskType(@Param("code") String code, @Param("kind") Integer taskType);

    /**
     * insertInitTaskOrder
     * 反向生成单据表信息
     *
     * @param newOrder 单据表信息
     * @return int 执行数量
     * @author 徐一贺
     * @date 2020/9/16 16:03
     * @version 1.0
     */
    int insertInitTaskOrder(BusBudgetAccountingTask newOrder);

    /**
     * findAccountingDataSourceList
     * 获取核算数据源列表
     *
     * @param param 检索参数
     * @return AbDataSource 数据
     * @author 徐一贺
     * @date 2020/9/16 19:14
     * @version 1.0
     */
    List<AbDataSourceModel> findAccountingDataSourceList(AbDataSourceModel param);

    /**
     * findAccountingDataSourceListByItem
     * 获取核算数据源列表
     *
     * @param param 检索参数
     * @return AbDataSource 数据
     * @author 徐一贺
     * @date 2020/9/16 19:14
     * @version 1.0
     */
    List<BusDataSourceModel> findAccountingDataSourceListByItem(AbDataSourceModel param);

    /**
     * getProjectModel
     * 根据项目编号从项目看板系统的项目信息视图中获取对应的项目信息
     *
     * @param code 项目编号
     * @return ProjectModel 项目信息
     * @author 徐一贺
     * @date 2020/9/17 10:23
     * @version 1.0
     */
    ProjectModel getProjectModel(String code);


    /**
     * getAbBudgetAccountingTaskByPrimaryKey
     * 根据主键获取单据表信息
     *
     * @param batId 主键
     * @return AbBudgetAccountingTask 实体信息
     * @author 徐一贺
     * @date 2020/9/17 14:11
     * @version 1.0
     */
    BusBudgetAccountingTask getAbBudgetAccountingTaskByPrimaryKey(Integer batId);

    /**
     * updateDataSourceReceiveInfo
     * 更新接收状态和接收时间和数据源
     *
     * @param dataSourceModel 数据
     * @return int 执行行数
     * @author 徐一贺
     * @date 2020/9/17 19:47
     * @version 1.0
     */
    int updateDataSourceReceiveInfo(BusDataSourceModel dataSourceModel);

    /**
     * getAbDataSourceByPrimaryKey
     * 依据主键获取数据源
     *
     * @param dsId 主键
     * @return 数据源信息
     * @author 徐一贺
     * @date 2020/9/18 11:10
     * @version 1.0
     */
    BusDataSource getAbDataSourceByPrimaryKey(String dsId);

    /**
     * accountingDataListByMat
     * 获取对应任务对应数据源的材料数据
     *
     * @param param 参数
     * @return java.util.List 结果
     * @author 徐一贺
     * @date 2020/9/18 11:19
     * @version 1.0
     */
    List<BusMaterialData> accountingDataListByMat(AbDataSourceModel param);


    /**
     * findBusBudgetAccountingCostByBatId
     * 根据单据表主键获取成本项数据
     *
     * @param adtId 单据表主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusBudgetAccountingCostModel 结果
     * @author 徐一贺
     * @date 2020/10/6 10:30
     * @version 1.0
     */
    List<BusBudgetAccountingCostModel> findBusBudgetAccountingCostByBatId(String adtId);

    /**
     * findBusBudgetAccountingCostByBatId
     * 根据单据表主键获取成本项数据
     *
     * @param batId 单据表主键
     * @param verId 版本ID
     * @return
     * @author 徐一贺
     * @date 2020/10/6 10:30
     * @version 1.0
     */
    List<BusBudgetAccountingCostModel> findBusBudgetAccountingCostByBatId(@Param("batId") Integer batId, @Param("verId") Integer verId);

    /**
     * findShowBusBudgetAccountingCostByBatId
     * 根据单据表主键获取成本项查看审核数据
     *
     * @param batId 单据表主键
     * @return java.util.List 结果
     * @author 徐一贺
     * @date 2020/10/6 10:30
     * @version 1.0
     */
    List<BusBudgetAccountingCost> findShowBusBudgetAccountingCostByBatId(Integer batId);

    /**
     * findBusCostTemplateByItemType
     * 根据模板类别获取对应得模板
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/6 10:38
     * @version 1.0
     */
    List<BusCostTemplate> findBusCostTemplateByItemType(int itemType);

    /**
     * insertBusBudgetAccountingCost
     * 插入预核算清单数据
     *
     * @param busBudgetAccountingCost 参数
     * @return int 执行次数
     * @author 徐一贺
     * @date 2020/10/6 11:00
     * @version 1.0
     */
    int insertBusBudgetAccountingCost(BusBudgetAccountingCost busBudgetAccountingCost);

    /**
     * findBusBudgetAccountingCostByName
     * 小计
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/6 11:04
     * @version 1.0
     */
    BusBudgetAccountingCost findBusBudgetAccountingCostByName(@Param("name") String name, @Param("itemType") Integer itemType);

    /**
     * findBusBudgetAccountingBasicInfoConfigListByBatId
     * 根据单据表主键获取对应的基础信息
     *
     * @param batId 单据表主键
     * @return
     * @author 徐一贺
     * @date 2020/10/7 9:25
     * @version 1.0
     */
    List<BusBudgetAccountingBasicInfoConfig> findBusBudgetAccountingBasicInfoConfigListByBatId(Integer batId);

    /**
     * findBusBudgetAccountingBasicInfoConfigTemplate
     * 获取预算模板数据
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/7 9:29
     * @version 1.0
     */
    List<BusBudgetAccountingBasicInfoConfigTemplate> findBusBudgetAccountingBasicInfoConfigTemplate();

    /**
     * insertBusBudgetAccountingBasicInfoConfig
     * 插入一条基础信息
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/7 9:45
     * @version 1.0
     */
    int insertBusBudgetAccountingBasicInfoConfig(BusBudgetAccountingBasicInfoConfig busBudgetAccountingBasicInfoConfig);

    /**
     * findTextureListByBatIdAndMajor
     * 获取机械材质列表
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/12 16:29
     * @version 1.0
     */
    List<String> findTextureListByBatIdAndMajor(@Param("batId") Integer batId, @Param("major") String major);

    /**
     * 根据项目号获取对应的设备净重和总重的集合
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 12:58
     * @version 1.0
     */
    List<BusGeneralHoursModel> findBusGeneralHoursForWeightBuyProjectCode(String projectCode);

    /**
     * getCostTotalWeightByBatIdAndMalTypeAndMajor
     * 根据单据表主键、专业和物料类别获取总重，总重转换成单位吨所以除1000
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 13:33
     * @version 1.0
     */
    BigDecimal getCostTotalWeightByBatIdAndMalTypeAndMajor(@Param("batId") Integer batId, @Param("major") String major, @Param("malType") String malType, @Param("texture") String texture);

    /**
     * getVwProjectByCode
     * 获取看板项目表信息
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 14:11
     * @version 1.0
     */
    VwProject getVwProjectByCode(String proCode);

    /**
     * getBusDataSourceByPrimaryKey
     * 根据主键获取数据源信息
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 14:16
     * @version 1.0
     */
    BusDataSource getBusDataSourceByPrimaryKey(Integer id);


    /**
     * getMajorFromBproductStructureByFkIdAndPartName
     * 依据部分和项目主键获取对应的专业
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 15:41
     * @version 1.0
     */
    String getMajorFromBproductStructureByFkIdAndPartName(@Param("code") String code, @Param("partName") String part);


    /**
     * deleteBusGeneralHoursByDsIdAndTypeAndLaborType
     * 删除对应数据源，对应专业和对应工时类别数据
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 19:02
     * @version 1.0
     */
    void deleteBusGeneralHoursByDsIdAndTypeAndLaborTypeAndPartName(BusGeneralHoursModel busGeneralHoursModel);

    /**
     * getCosInputDataByPrimaryKey
     * 根据主键获取成本录入项信息
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/13 20:50
     * @version 1.0
     */
    CosInputData getCosInputDataByPrimaryKey(Integer fkInputId);

    /**
     * updateDataSourceByPrimaryKeySelectivity
     * 根据主键选择性更新数据源信息
     *
     * @param dataSource 数据源
     * @return int 更新条数
     * @author 徐一贺
     * @date 2020/10/17 7:58
     * @version 1.0
     */
    int updateDataSourceByPrimaryKeySelectivity(BusDataSource dataSource);

    /**
     * findDesignHoursList
     * 获取设计工时
     *
     * @param param 参数
     * @return java.util.List 结果
     * @author 徐一贺
     * @date 2020/10/17 11:16
     * @version 1.0
     */
    List<BusGeneralHoursModel> findDesignHoursList(BusGeneralHoursModel param);

    /**
     * findWeightWeightList
     * 获取设计重量数据
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult 结果
     * @author 徐一贺
     * @date 2020/10/17 11:21
     * @version 1.0
     */
    List<BusGeneralHoursModel> findWeightWeightList(BusGeneralHoursModel param);

    /**
     * deleteBusGeneralHoursByDsId
     * 删除该数据源ID
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/17 13:03
     * @version 1.0
     */
    int deleteBusGeneralHoursByDsId(BusGeneralHoursModel param);


    /**
     * insertBusMaterialData
     * 插入材料数据
     *
     * @param
     * @return
     * @author 徐一贺
     * @date 2020/10/17 15:30
     * @version 1.0
     */
    int insertBusMaterialData(BusMaterialData busMaterialData);


    /**
     * deleteBusMaterialDataByCondition
     * 根据条件清空数据
     *
     * @param busCondition 条件
     * @return
     * @author 徐一贺
     * @date 2020/10/19 15:10
     * @version 1.0
     */
    int deleteBusMaterialDataByCondition(BusMaterialData busCondition);

    /**
     * deleteBusMaterialDataByConditionModel
     * 根据条件删除材料数据
     *
     * @param busCondition 条件
     * @return
     * @author 徐一贺
     * @date 2020/10/19 15:36
     * @version 1.0
     */
    int deleteBusMaterialDataByConditionModel(BusMaterialDataModel busCondition);

    /**
     * findCosManufactureModelList
     * 依据条件获取下料工时数据
     *
     * @param condition 条件
     * @return
     * @author 徐一贺
     * @date 2020/10/20 8:37
     * @version 1.0
     */
    List<CosSheetModel> findCosManufactureModelList(CosSheetModel condition);

    /**
     * getConfigTemplatePriceByCode
     * 根据code在配置模板报表中获取值
     *
     * @param code 基础配置码
     * @return
     * @author 徐一贺
     * @date 2020/10/20 9:16
     * @version 1.0
     */
    BigDecimal getConfigTemplatePriceByCode(String code);

    /**
     * insertBusGeneralHours
     * 插入工时数据
     *
     * @param busGeneralHours 工时
     * @return
     * @author 徐一贺
     * @date 2020/10/20 9:25
     * @version 1.0
     */
    int insertBusGeneralHours(BusGeneralHours busGeneralHours);


    /**
     * updateCosManufactureReceiveInfoByPrimaryKey
     * 根据主键更新接收信息
     *
     * @param cosSheetModel 接收信息
     * @return
     * @author 徐一贺
     * @date 2020/10/20 13:30
     * @version 1.0
     */
    int updateCosSheetModelReceiveInfoByPrimaryKey(CosSheetModel cosSheetModel);

    /**
     * deleteBusGeneralHoursByConditionModel
     * 依据条件清空数据
     *
     * @param busCondition 条件
     * @return
     * @author 徐一贺
     * @date 2020/10/20 16:31
     * @version 1.0
     */
    int deleteBusGeneralHoursByConditionModel(BusGeneralHoursModel busCondition);

    /**
     * deleteBusMachiningHoursByCondition
     * 根据条件清空机加数据
     *
     * @param clearDataCondition 清空条件
     * @return int
     * @author 徐一贺
     * @date 2020/10/21 10:08
     * @version 1.0
     */
    int deleteBusMachiningHoursByCondition(BusMachiningHours clearDataCondition);

    /**
     * getDefaultBusMachiningEquipmentByCode
     * 根据code设备识别代码获取默认机加设备信息
     *
     * @param code 设备识别代码
     * @return com.zhongwang.business.gen.entity.BusMachiningEquipment
     * @author 徐一贺
     * @date 2020/10/21 12:52
     * @version 1.0
     */
    BusMachiningEquipment getDefaultBusMachiningEquipmentByCode(String code);

    /**
     * insertBusMachiningHours
     * 插入机加工时
     *
     * @param data 机加工时数据
     * @return int
     * @author 徐一贺
     * @date 2020/10/21 13:11
     * @version 1.0
     */
    int insertBusMachiningHours(BusMachiningHours data);

    /**
     * findBusDataSourceModelListByBatId
     * 根据单据表ID获取数据源列表
     *
     * @param id 单据表主键
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusDataSourceModel>
     * @author 徐一贺
     * @date 2020/10/23 17:58
     * @version 1.0
     */
    List<BusDataSourceModel> findBusDataSourceModelListByBatId(Integer id);

    /**
     * findBuyList
     * 根据数据源和单据表主键获取外购件列表
     *
     * @param param 参数
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusMaterialDataModel>
     * @author 徐一贺
     * @date 2020/10/23 18:15
     * @version 1.0
     */
    List<BusMaterialDataModel> findBuyList(BusMaterialDataModel param);

    /**
     * deleteBusMaterialDataByDsId
     * 根据数据源ID清空数据
     *
     * @param param 参数
     * @return int
     * @author 徐一贺
     * @date 2020/10/23 18:25
     * @version 1.0
     */
    int deleteBusMaterialDataByDsId(BusMaterialDataModel param);

    /**
     * findHours
     * 获取工时列表
     *
     * @param param 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusGeneralHoursModel>
     * @author 徐一贺
     * @date 2020/10/23 20:24
     * @version 1.0
     */
    List<BusGeneralHoursModel> findHours(BusGeneralHoursModel param);

    /**
     * getBusBudgetAccountingTaskByPrimaryKey
     *
     * @param batId 单据表主键
     * @return com.zhongwang.business.gen.entity.BusBudgetAccountingTask
     * @author 徐一贺
     * @date 2020/10/24 8:04
     * @version 1.0
     */
    BusBudgetAccountingTaskModel getBusBudgetAccountingTaskByPrimaryKey(Integer batId);

    /**
     * findMacHours
     * 获取计划机加工时
     *
     * @param param 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusMachiningHoursModel>
     * @author 徐一贺
     * @date 2020/10/24 8:56
     * @version 1.0
     */
    List<Map<String, String>> findMacHours(BusMachiningHoursModel param);


    /**
     * findBusMachiningEquipmentCodeBy
     * 获取型号列表
     *
     * @param param 条件
     * @return java.util.List<java.lang.String>
     * @author 徐一贺
     * @date 2020/10/24 9:47
     * @version 1.0
     */
    List<BusMachiningEquipment> findBusMachiningEquipmentCodeBycondition(BusMachiningHoursModel param);

    /**
     * deleteBusMachiningHoursByDsId
     * 清空指定数据源的机加数据
     *
     * @param dsId 数据源主键
     * @return void
     * @author 徐一贺
     * @date 2020/10/24 16:36
     * @version 1.0
     */
    int deleteBusMachiningHoursByDsId(Integer dsId);

    /**
     * updateDataStatusByParamaryKey
     * 根据主键更新数据源状态
     *
     * @param param 跟新内容
     * @return int
     * @author 徐一贺
     * @date 2020/10/26 10:57
     * @version 1.0
     */
    int updateDataStatusByParamaryKey(BusDataSourceModel param);

    /**
     * getBusBudgetAccountingTaskByCondition
     * 根据条件获取单据表信息
     *
     * @param budgetAccountingTaskCondition 条件
     * @return com.zhongwang.business.gen.entity.BusBudgetAccountingTask
     * @author 徐一贺
     * @date 2020/10/31 8:21
     * @version 1.0
     */
    BusBudgetAccountingTask getBusBudgetAccountingTaskByCondition(BusBudgetAccountingTask budgetAccountingTaskCondition);

    /**
     * deleteBusBuddgetAccountingCostByBatId
     * 根据batId删除核算清单
     *
     * @param batId 单据表主键
     * @return int
     * @author 徐一贺
     * @date 2020/10/31 15:12
     * @version 1.0
     */
    Integer deleteBusBudgetAccountingCostByBatId(Integer batId);

    /**
     * getAccountingEquipmentTotalWeightByBatId
     * 根据单据表获取核算设备总重，单位吨
     *
     * @param batId 单据表主键
     * @return java.math.BigDecimal
     * @author 徐一贺
     * @date 2020/11/10 16:03
     * @version 1.0
     */
    BigDecimal getAccountingEquipmentTotalWeightByBatId(Integer batId);

    /**
     * getAccountingEquipmentTotalNetWeightByBatId
     * 根据单据表获取核算设备总净重，单位吨
     *
     * @param batId 单据表主键
     * @return java.math.BigDecimal
     * @author 徐一贺
     * @date 2020/11/10 16:03
     * @version 1.0
     */
    BigDecimal getAccountingEquipmentTotalNetWeightByBatId(Integer batId);

    /**
     * updateBusBudgetAccountingTaskByPriamyKeySelective
     * 选择性更新单据表
     *
     * @param param
     * @return int
     * @author 徐一贺
     * @date 2020/11/10 18:24
     * @version 1.0
     */
    int updateBusBudgetAccountingTaskByPrimaryKeySelective(BusBudgetAccountingTaskModel param);

    /**
     * findSubmitList
     * 获取核算成本清单提交列表
     *
     * @param param 检索条件
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel 列表数据
     * @author 徐一贺
     * @date 2020/11/10 20:14
     * @version 1.0
     */
    List<AccountingProjectModel> findSubmitList(AccountingProjectModel param);

    /**
     * findSubmitListCount
     * 获取核算成本清单提交数据总数
     *
     * @param param 检索条件
     * @return java.lang.Long 数据总数
     * @author 徐一贺
     * @date 2020/11/10 20:14
     * @version 1.0
     */
    Integer findSubmitListCount(AccountingProjectModel param);

    /**
     * findApprovalList 获取核算成本清单审核列表
     *
     * @param param
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel>
     * @throws
     * @author 徐一贺
     * @date 2020/11/25 8:51
     */
    List<AccountingProjectModel> findApprovalList(AccountingProjectModel param);

    /**
     * getBusBudgetAccountingCostModelByBatIdAndCode
     * 根据单据表主键和code获取清单项
     *
     * @param condition 条件
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusBudgetAccountingCostModel
     * @author 徐一贺
     * @date 2020/11/10 20:35
     * @version 1.0
     */
    BusBudgetAccountingCostModel getBusBudgetAccountingCostModelByBatIdAndCode(BusBudgetAccountingCostModel condition);

    /**
     * getBusBudgetAccountingTaskByCode
     * 根据项目号获取核算单据表
     *
     * @param code 条件
     * @return com.zhongwang.business.gen.entity.BusBudgetAccountingTask
     * @author 徐一贺
     * @date 2020/11/11 11:25
     * @version 1.0
     */
    BusBudgetAccountingTask getBusBudgetAccountingTaskByCode(String code);

    /**
     * findBusDataSourceModelListByBatIdAndDataCodeList
     * 根据batId和dataCode码获取数据源集合
     *
     * @param dataSourceCondition 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusDataSourceModel>
     * @author 徐一贺
     * @date 2020/11/11 17:48
     * @version 1.0
     */
    List<BusDataSourceModel> findBusDataSourceModelListByBatIdAndDataCodeList(BusDataSourceModel dataSourceCondition);

    /**
     * findBusBudgetAccountingCostByCondition
     * 根据条件获取成本项
     *
     * @param condition 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusBudgetAccountingCostModel>
     * @author 徐一贺
     * @date 2020/11/12 20:45
     * @version 1.0
     */
    List<BusBudgetAccountingCostModel> findBusBudgetAccountingCostByCondition(BusBudgetAccountingCostModel condition);

    /**
     * getBusMaterialDataDataCountByCondition
     * 根据条件获取原材料、外购件、外协件的数据量
     *
     * @param carbonSteelCondition 条件
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/13 8:34
     * @version 1.0
     */
    Integer getBusMaterialDataDataCountByCondition(BusMaterialDataModel carbonSteelCondition);

    /**
     * updateBusBudgetAccountingCostDataSourceByPrimaryKey
     * 根据主键更新数据源信息
     *
     * @param cost 条件
     * @return int
     * @author 徐一贺
     * @date 2020/11/13 8:51
     * @version 1.0
     */
    int updateBusBudgetAccountingCostDataSourceByPrimaryKey(BusBudgetAccountingCostModel cost);

    /**
     * getBusGeneralHoursCountByCondition
     * 根据条件获取工时、辅材、运费、重量数据数量
     *
     * @param cutCondition 条件
     * @return int
     * @author 徐一贺
     * @date 2020/11/13 9:09
     * @version 1.0
     */
    int getBusGeneralHoursCountByCondition(BusGeneralHoursModel cutCondition);

    /**
     * getBusMachiningHoursCountByCondition
     * 根据条件获取机加数据数量
     *
     * @param macCondition 条件
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/13 9:26
     * @version 1.0
     */
    Integer getBusMachiningHoursCountByCondition(BusMachiningHoursModel macCondition);

    /**
     * findDesignWorkingHoursListByCondition
     * 获取确认设计工时
     *
     * @param designWorkingHoursCondition 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.VwPdmWorkingHoursModel>
     * @author 徐一贺
     * @date 2020/11/13 12:48
     * @version 1.0
     */
    List<VwPdmWorkingHoursModel> findDesignWorkingHoursListByCondition(VwPdmWorkingHoursModel designWorkingHoursCondition);

    /**
     * updateVwCosSheetBychangeReceiveModel
     * 根据条件更新接收信息
     *
     * @param changeReceiveModel 条件
     * @return int
     * @author 徐一贺
     * @date 2020/11/13 13:38
     * @version 1.0
     */
    int updateVwCosSheetByChangeReceiveModel(VwPdmWorkingHoursModel changeReceiveModel);

    /**
     * findVwMachiningModelListByCondition
     * 根据条件获取机加数据
     *
     * @param machiningCondition 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.VwMachiningModel>
     * @author 徐一贺
     * @date 2020/11/13 15:13
     * @version 1.0
     */
    List<VwMachiningModel> findVwMachiningModelListByCondition(VwMachiningModel machiningCondition);

    /**
     * getMachiningEquipmentCodeByModel
     * 根据设备型号和类型获取设备代码
     *
     * @param machiningModel 条件
     * @return java.lang.String
     * @author 徐一贺
     * @date 2020/11/13 16:31
     * @version 1.0
     */
    String getMachiningEquipmentCodeByModel(VwMachiningModel machiningModel);

    /**
     * deleteBusGeneralHoursByclearGeneralHoursData
     * 根据模型条件清空数据
     *
     * @param clearGeneralHoursData 参数
     * @return int
     * @author 徐一贺
     * @date 2020/11/13 19:38
     * @version 1.0
     */
    int deleteBusGeneralHoursByclearGeneralHoursData(BusGeneralHoursModel clearGeneralHoursData);

    /**
     * findFreightList 根据条件获取运费信息
     *
     * @param condition 条件
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.CosSheetModel>
     * @throws
     * @author 徐一贺
     * @date 2020/11/19 8:27
     */
    List<CosSheetModel> findFreightList(CosSheetModel condition);

    /**
     * findCostMajorByBatId 根据单据表主键获取成本项专业列表
     *
     * @param batId
     * @return java.util.List<java.lang.String>
     * @throws
     * @author 徐一贺
     * @date 2020/11/19 11:16
     */
    List<String> findCostMajorByBatId(Integer batId);

    /**
     * getBusBudgetAccountingEstimatesDataByCondition 根据条件获取预算概算核算数据
     *
     * @param carbonSteelCondition 条件
     * @return com.zhongwang.business.gen.entity.BusBudgetAccountingEstimatesData
     * @author 徐一贺
     * @date 2020/11/19 13:41
     */
    BusBudgetAccountingEstimatesData getBusBudgetAccountingEstimatesDataByCondition(BusBudgetAccountingEstimatesData carbonSteelCondition);

    /**
     * getMatPurFeeCostTotalWeightByCondition 根据条件获取总料重
     *
     * @param carbonSteelCondition
     * @return java.math.BigDecimal
     * @author 徐一贺
     * @date 2020/12/10 15:41
     */
    BigDecimal getMatPurFeeCostTotalWeightByCondition(BusBudgetAccountingEstimatesData carbonSteelCondition);

    /**
     * getTotalNumByCondition 根据条件获取总数
     *
     * @param carbonSteelTotalNetWeightCondition 条件
     * @return java.math.BigDecimal
     * @throws
     * @author 徐一贺
     * @date 2020/11/19 13:53
     */
    BigDecimal getTotalNumByCondition(BusGeneralHoursModel carbonSteelTotalNetWeightCondition);

    /**
     * getBusBudgetAccountingBasicInfoConfigByCondition 根据条件获取废料回收系数
     *
     * @param paramCondition 条件
     * @return java.math.BigDecimal
     * @throws
     * @author 徐一贺
     * @date 2020/11/19 14:03
     */
    BigDecimal getBusBudgetAccountingBasicInfoConfigByCondition(BusBudgetAccountingBasicInfoConfigModel paramCondition);

    /**
     * getBusDataSourceModelByPrimaryKey 根据主键获取数据源
     *
     * @param id 主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusDataSourceModel
     * @throws
     * @author 徐一贺
     * @date 2020/11/20 18:24
     */
    BusDataSourceModel getBusDataSourceModelByPrimaryKey(Integer id);

    /**
     * getDataSourceByPrimaryKey 根据主键获取数据源
     *
     * @param dsId
     * @return com.zhongwang.business.gen.entity.BusDataSource
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 10:47
     */
    BusDataSource getDataSourceByPrimaryKey(Integer dsId);

    /**
     * getChildListByCondition 根据条件寻找子项集合
     *
     * @param matPurFeeCost 条件
     * @return java.util.List<com.zhongwang.business.gen.entity.BusBudgetAccountingCost>
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 12:48
     */
    List<BusBudgetAccountingCostModel> getChildListByCondition(BusBudgetAccountingCostModel matPurFeeCost);

    /**
     * findBusinessGroupList 获取非删除的组名
     *
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusinessGroupModel>
     * @author 徐一贺
     * @date 2020/11/23 13:24
     */
    List<BusinessGroupModel> findBusinessGroupList();

    /**
     * findCostListByCondition 根据条件获取成本列表
     *
     * @param showCostListCondition 条件
     * @return java.util.List<com.zhongwang.business.gen.entity.BusBudgetAccountingCost>
     * @throws
     * @author 徐一贺
     * @date 2020/11/23 19:40
     */
    List<BusBudgetAccountingCostModel> findCostListByCondition(BusBudgetAccountingCostModel showCostListCondition);

    /**
     * getSheetDetailModelByBllId 检测单据表是否存在
     *
     * @param bllId   子集单据表ID
     * @param appType 类别
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AuditProcessModel
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 16:26
     */
    AuditProcessModel getSheetDetailModelByBllId(@Param("bllId") Integer bllId, @Param("appType") Integer appType);

    /**
     * insertSheetDetail 插入单据表数据
     *
     * @param orderSheet
     * @return int
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 17:52
     */
    int insertSheetDetail(AuditProcessModel orderSheet);

    /**
     * findAppNodeInfoByUserId 根据用户ID 查询该用户下所有核算审核流程
     *
     * @param id 用户ID
     * @return java.util.List<com.zhongwang.business.module.contractManage.model.ConContractMainModel>
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 17:58
     */
    List<AuditProcessModel> findAppNodeInfoByUserId(Integer id);
    /**
     * findAppNodeInfoByUserId 根据用户ID 查询该用户下所有核算审核流程
     *
     * @param id 用户ID
     * @return java.util.List<com.zhongwang.business.module.contractManage.model.ConContractMainModel>
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 17:58
     */
    List<AuditProcessModel> findEstAppNodeInfoByUserId(Integer id);
    /**
     * findAppNodeInfoByUserId 根据用户ID 查询该用户下所有概算审核流程
     *
     * @param id 用户ID
     * @return java.util.List<com.zhongwang.business.module.contractManage.model.ConContractMainModel>
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 17:58
     */
    List<AuditProcessModel> findAppNodeInfoByUserIdToEst(Integer id);

    /**
     * findAppNodeInfo 寻找审核节点
     *
     * @param level 级别
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.AuditProcessModel>
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 18:07
     */
    List<AuditProcessModel> findAppNodeInfo(int level);
    /**  findAppNodeInfoToEst 寻找审核节点
     * @param level
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.AuditProcessModel>
     * @author 徐一贺
     * @date 2021/1/7 20:33
     */
    List<AuditProcessModel> findAppNodeInfoToEst(int level);

    /**
     * getNowLevelByUserId 根据我当前登录的账号，和流程配置的级别，找到审核者、
     *
     * @param id 当前用户ID
     * @return int
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 18:11
     */
    int getNowLevelByUserId(Integer id);
    /**
     * getNowLevelByUserId 根据我当前登录的账号，和流程配置的级别，找到审核者、
     *
     * @param id 当前用户ID
     * @return int
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 18:11
     */
    int getNowLevelByUserIdToEst(Integer id);

    /**
     * findNextLevelUserByPId 寻找上一级审核者
     *
     * @param id
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AuditProcessModel
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 18:14
     */
    AuditProcessModel findNextLevelUserByPId(int id);

    /**
     * insertVerifyProcess 插入审核记录
     *
     * @param addAppInfo 审核记录
     * @return int
     * @throws
     * @author 徐一贺
     * @date 2020/11/24 18:20
     */
    int insertVerifyProcess(AuditProcessModel addAppInfo);

    /**
     * getRejectInfoBy 获取驳回信息
     *
     * @param bllId      单据表主键
     * @param submitUser 当前用户ID
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/11/24 20:34
     */
    AccountingProjectModel getRejectInfoBy(@Param("bllId") Integer bllId, @Param("submitUser") Integer submitUser);
    /**
     * getRejectInfoBy 获取驳回信息
     *
     * @param bllId      单据表主键
     * @param submitUser 当前用户ID
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/11/24 20:34
     */
    AccountingProjectModel getEstimatingRejectInfoBy(@Param("bllId") Integer bllId, @Param("submitUser") Integer submitUser);

    /**
     * getReviewerInfo 根据条件获取当前审核流程信息
     *
     * @param condition 条件
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/11/25 13:30
     */
    AccountingProjectModel getReviewerInfo(AccountingProjectModel condition);
    /**  getEstReviewerInfo 根据条件获取当前审核流程信息
     * @param condition
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2021/1/8 10:24
     */
    AccountingProjectModel getEstReviewerInfo(AccountingProjectModel condition);

    /**
     * updVerifyProcess 更新状态
     *
     * @param param 参数
     * @return int
     * @author 徐一贺
     * @date 2020/11/25 16:03
     */
    int updVerifyProcess(AccountingProjectModel param);

    /**
     * findVerifyProcess 获取当前流程
     *
     * @param id 主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/11/25 16:07
     */
    AccountingProjectModel findVerifyProcess(Integer id);

    /**
     * getBusBudgetAccountingTaskModelByVerifyProcessPrimarykey 根据审核提交记录表主键获取单据表信息
     *
     * @param id 审核提交记录表主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusBudgetAccountingTaskModel
     * @author 徐一贺
     * @date 2020/11/25 16:21
     */
    BusBudgetAccountingTaskModel getBusBudgetAccountingTaskModelByVerifyProcessPrimarykey(Integer id);

    /**
     * findNextUserByNgInfo 查找
     *
     * @param id 主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AuditProcessModel
     * @author 徐一贺
     * @date 2020/11/25 16:41
     */
    AuditProcessModel findNextUserByNgInfo(Integer id);

    /**
     * getEndReviewerInfo 获取最后审核人信息
     *
     * @param condition 条件
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/11/26 9:10
     */
    AccountingProjectModel getEndReviewerInfo(AccountingProjectModel condition);

    /**
     * findVerifyProcessByBatId  根据子集单据表主键获取驳回列表数据
     *
     * @param batId 子集单据表主键
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel>
     * @author 徐一贺
     * @date 2020/11/26 20:10
     */
    List<AccountingProjectModel> findVerifyProcessByBatId(@Param("batId") Integer batId);

    /**
     * updateTaskInfoByPrimaryKey 依据主键更新任务信息
     *
     * @param task 主键及任务信息
     * @return int
     * @author 徐一贺
     * @date 2020/11/27 20:05
     */
    int updateTaskInfoByPrimaryKey(Task task);

    /**
     * getTaskByPrimaryKey 根据主键获取任务
     *
     * @param taskId 主键
     * @return com.zhongwang.business.gen.entity.Task
     * @author 徐一贺
     * @date 2020/11/27 20:16
     */
    Task getTaskByPrimaryKey(Integer taskId);

    /**
     * getBusMaterialDataCountByBatId 根据单据表主键获取对应的材料数据量
     *
     * @param batId 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:11
     */
    Integer getBusMaterialDataCountByBatId(Integer batId);

    /**
     * getBusMachininghoursCountByBatId 根据单据表主键获取对应的机加数据量
     *
     * @param batId 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:14
     */
    Integer getBusMachininghoursCountByBatId(Integer batId);

    /**
     * getBusGeneralHoursCountByBatId 根据单据表主键获取对应的工时材料运费数据量
     *
     * @param batId 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:15
     */
    Integer getBusGeneralHoursCountByBatId(Integer batId);

    /**
     * deleteBusBudgetDataSourceByBatId 根据单据表主键删除数据源
     *
     * @param batId 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:20
     */
    Integer deleteBusBudgetDataSourceByBatId(Integer batId);

    /**
     * deleteBusBudgetAccountingEstimatesData 根据单据表主键删除核算相关数据
     *
     * @param batId 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:23
     */
    Integer deleteBusBudgetAccountingEstimatesDataByBatId(Integer batId);

    /**
     * getTaskByBatId 根据单据表主键获取核算任务表数据
     *
     * @param batId 单据表主键
     * @return com.zhongwang.business.gen.entity.Task
     * @author 徐一贺
     * @date 2020/11/30 14:26
     */
    Task getTaskByBatId(Integer batId);

    /**
     * deleteBusBudgetAccountingBasicInfoConfig 根据单据表主键删除核算清单表基础配置信息
     *
     * @param batId 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:36
     */
    Integer deleteBusBudgetAccountingBasicInfoConfigByBatId(Integer batId);

    /**
     * deleteBusBudgetAccountTaskByBatId 根据单据表主键删除单据表数据
     *
     * @param batId 单据表
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/11/30 14:43
     */
    Integer deleteBusBudgetAccountTaskByBatId(Integer batId);


    /**
     * getNewUserList revoke 根据组的ID获取对应组的成员列表，切不包含当前创建人
     *
     * @param groupId  组ID
     * @param userName 当前用户
     * @return java.util.List<com.zhongwang.business.gen.entity.User>
     * @author 徐一贺
     * @date 2020/11/30 16:00
     */
    List<User> findUserByDeptIdByNotUserName(@Param("groupId") Integer groupId, @Param("userName") String userName);

    /**
     * getUserById 根据用户主键获取用户信息
     *
     * @param taskUid 用户主键
     * @return com.zhongwang.business.gen.entity.User
     * @author 徐一贺
     * @date 2020/11/30 16:47
     */
    User getUserById(Integer taskUid);

    /**
     * getReviewerInfo2 获取审核人
     *
     * @param id 审核记录主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/12/1 15:21
     */
    AccountingProjectModel getReviewerInfo2(Integer id);

    /**
     * getAuditLevelByNowNode 根据当前节点获取审核级别
     *
     * @param nowNode 当前节点
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/12/1 15:58
     */
    AccountingProjectModel getAuditLevelByNowNode(AccountingProjectModel nowNode);
    /**
     * getAuditLevelByNowNode 根据当前节点获取审核级别
     *
     * @param nowNode 当前节点
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/12/1 15:58
     */
    AccountingProjectModel getAuditLevelByNowNodeEst(AccountingProjectModel nowNode);

    /**
     * getAuditOrderByBllId 根据单据表主键获取审核单据表
     *
     * @param id 单据表主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/12/1 16:10
     */
    AccountingProjectModel getAuditOrderByBllId(Integer id);
    /**
     * getAuditOrderByBllId 根据单据表主键获取审核单据表
     *
     * @param id 单据表主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/12/1 16:10
     */
    AccountingProjectModel getEstAuditOrderByBllId(Integer id);

    /**
     * updateSheetDetailByPrimaryKey 根据主键更新单据表的审核人和审批人信息
     *
     * @param auditOrder 信息
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/1 16:15
     */
    Integer updateSheetDetailByPrimaryKey(AccountingProjectModel auditOrder);

    /**
     * getReviewerInfoByBllId 根据单据表主键获取审核单据表信息
     *
     * @param batId 单据表主键
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.AccountingProjectModel
     * @author 徐一贺
     * @date 2020/12/1 16:29
     */
    AccountingProjectModel getReviewerInfoByBllId(Integer batId);

    /**
     * checkIsEnd 检测是否是审核终点
     *
     * @param userId 用户ID
     * @return com.zhongwang.business.gen.entity.VerifyInfo
     * @author 徐一贺
     * @date 2020/12/3 8:45
     */
    VerifyInfo checkIsEnd(Integer userId);

    /**
     * updateBusDataSourceByPrimaryKey 依据逐渐更新数据源数据信息
     *
     * @param dataSource 数据源数据信息
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/3 10:10
     */
    Integer updateBusDataSourceByPrimaryKey(BusDataSource dataSource);

    /**
     * deleteVerifyProcess 根据单据表主键删除核算的审核记录
     *
     * @param id 单据表ID
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/10 15:03
     */
    Integer deleteVerifyProcess(Integer id);

    /**
     * deleteSheetDetail 根据单据表ID删除审核单据表
     *
     * @param id 审核单据表ID
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/10 15:04
     */
    Integer deleteSheetDetail(Integer id);

    /**
     * deleteBusMaterialDataByBatId 根据单据表ID删除材料数据
     *
     * @param id 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/10 15:06
     */
    Integer deleteBusMaterialDataByBatId(Integer id);

    /**
     * deleteBusGeneralHoursByBatId 根据单据表ID删除工时数据
     *
     * @param id 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/10 15:09
     */
    Integer deleteBusGeneralHoursByBatId(Integer id);

    /**
     * deleteBusMachiningHoursByBatId 根据单据表ID删除机加工时数据
     *
     * @param id 单据表主键
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/10 15:10
     */
    Integer deleteBusMachiningHoursByBatId(Integer id);

    /**
     * deleteBusDataSourceByBatId 根据单据表主键删除机加工时数据
     *
     * @param id 单据表主键
     * @return java.lang.Integer
     * @throws
     * @author 徐一贺
     * @date 2020/12/10 15:13
     */
    Integer deleteBusDataSourceByBatId(Integer id);

    /**
     * deleteBusBudgetAccountingTaskByPrimaryKey 根据主键删除单据表数据
     *
     * @param id 单据表主键
     * @return java.lang.Integer
     * @throws
     * @author 徐一贺
     * @date 2020/12/10 15:15
     */
    Integer deleteBusBudgetAccountingTaskByPrimaryKey(Integer id);

    /**
     * clearTaskInfo 清空任务信息
     *
     * @param taskId
     * @return java.lang.Integer
     * @throws
     * @author 徐一贺
     * @date 2020/12/10 15:17
     */
    Integer clearTaskInfo(Integer taskId);

    /**
     * getBusBudgetAccountingBasicInfoConfigModelByCondition 根据条件获取基础信息
     *
     * @param condition 条件
     * @return com.zhongwang.business.module.estimateBudgetAccountingManage.model.BusBudgetAccountingBasicInfoConfigModel
     * @author 徐一贺
     * @date 2020/12/14 15:33
     */
    BusBudgetAccountingBasicInfoConfigModel getBusBudgetAccountingBasicInfoConfigModelByCondition(
            BusBudgetAccountingBasicInfoConfigModel condition);

    /**
     * getBusBudgetAccountingCostByPrimaryKey 根据主键获取成本项
     *
     * @param costId
     * @return com.zhongwang.business.gen.entity.BusBudgetAccountingCost
     * @excetion A
     * @author 徐一贺
     * @date 2020/12/14 15:42
     */
    BusBudgetAccountingCost getBusBudgetAccountingCostByPrimaryKey(Integer costId);

    /**  getDataCountByBatId 根据单据表主键获取明细数据数量
     * @param id 单据表主键
     * @return java.lang.Integer
     * @exception
     * @author 徐一贺
     * @date 2020/12/17 13:07
     */
    Integer getDataCountByBatId(Integer id);

    /**  getConContractMainModelByCode 根据项目号获取合同信息
     * @param proCode 项目号
     * @return com.zhongwang.business.module.contractManage.model.ConContractMainModel
     * @author 徐一贺
     * @date 2020/12/17 20:39
     */
    ConContractMainModel getConContractMainModelByCode(String proCode);

    /**  getEstBusBudgetAccountingTaskCountByProCode 根据项模号获取该项目下有多少个概算单据
     * @param code 项目号
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2020/12/23 15:48
     */
    Integer getEstBusBudgetAccountingTaskCountByProCode(String code);

    /**  findMatDesc 获取去重后的提报计划名称列表
     * @param
     * @return java.util.List<com.zhongwang.business.module.estimateBudgetAccountingManage.model.redis.MatDescModel>
     * @author 徐一贺
     * @date 2020/12/31 11:27
     */
    List<MatDescModel> findMatDesc();
    /**  updateBusBudgetAccountingCostOrderNoByPrimaryKey 根据逐渐更新成本项顺序
     * @param currentItem
     * @return java.lang.Integer
     * @author 徐一贺
     * @date 2021/1/7 8:09
     */
    Integer updateBusBudgetAccountingCostOrderNoByPrimaryKey(BusBudgetAccountingCost currentItem);

    /**  getWasteCostByParam 根据条件获取废料回收费成本项
     * @param wasteCondition
     * @return com.zhongwang.business.gen.entity.BusBudgetAccountingCost
     * @author 徐一贺
     * @date 2021/1/7 13:42
     */
    BusBudgetAccountingCost getWasteCostByParam(BusBudgetAccountingCost wasteCondition);

    /**  findBusBudgetAccountingCostByParentCodeAndBatIdOrderByOrderNo 获取所有子项
     * @param param
     * @return java.util.List<com.zhongwang.business.gen.entity.BusBudgetAccountingCost>
     * @author 徐一贺
     * @date 2021/1/7 16:23
     */
    List<BusBudgetAccountingCost> findBusBudgetAccountingCostByParentCodeAndBatIdOrderByOrderNo(BusBudgetAccountingCost param);
}
